package com.git.smp.utils;

import java.util.Properties;


import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class SftpChannel {
    Session session = null;
    Channel channel = null;
    
    /** 利用JSch包实现SFTP下载、上传文件(用户名密码方式登陆) */
    public ChannelSftp connectByPwd(String hostname, int port, String username, String password) throws JSchException {
        JSch jsch = new JSch();
       
        if (port > 0) {
            //采用指定的端口连接服务器
            session = jsch.getSession(username, hostname, port);
        } else {
            //连接服务器，采用默认端口
            session = jsch.getSession(username, hostname);
        }
        if (session == null) {
            throw new JSchException("session为空，连接失败");
        }
        //设置登陆主机的密码
        session.setPassword(password);//设置密码
        Properties sshConfig = new Properties();
        sshConfig.put("StrictHostKeyChecking", "no");
        session.setConfig(sshConfig);
        session.setTimeout(30000);
        session.connect();
        //创建sftp通信通道
        channel = (Channel) session.openChannel("sftp");
        channel.connect();
        return (ChannelSftp) channel;
    }

    public void closeChannel() {
        if (channel != null) {
            channel.disconnect();
        }
        if (session != null) {
            session.disconnect();
        }
    }

}